#ifndef __MARS_GP_CL_DEVICE_H__
#define __MARS_GP_CL_DEVICE_H__

#include "MarsGPConstants.h"
#include "MarsGPDevice.h"

namespace GP
{

class CLDevice : public Device
{
public:
									CLDevice( PlatformVendor ePlatform, DeviceType eDeviceType, cl_device_type clType, cl_device_id id );
	virtual							~CLDevice();

	cl_device_type					GetNativeDeviceType() const;
	cl_device_id					GetNativeDeviceId() const;

protected:
	virtual void					RetriveDeviceInfo();

private:
	cl_device_type					m_clDeviceType;
	cl_device_id					m_deviceId;
};

inline cl_device_type CLDevice::GetNativeDeviceType() const
{
	return m_clDeviceType;
}

inline cl_device_id CLDevice::GetNativeDeviceId() const
{
	return m_deviceId;
}

} // end of namespace GP

#endif // end of #ifndef __MARS_GP_CL_DEVICE_H__